/**
 * 
 */
package Annotaiton;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.annotation.Resource;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;

/**
 * @author sz
 *
 * create time：2012-7-16
 */

public class TestAnnotation{

	public static void main(String[] args) throws Exception{
		
		F f= new F();
		
		Class clazz = f.getClass();//获取该对象对应的CLASS文件
	
		Method method = clazz.getDeclaredMethod("tt");//获取该对象指定的方法，不包括父类继承
			
		
		Bar bar = method.getAnnotation(Bar.class);
		
		System.out.println(bar.name());
		
		System.out.println(bar.val());
		
		System.out.println(bar.c());
	}
  
}

class F{
	
	@Bar(name = "123" , c=F.class, type = Types.ONE, v =100)
	public void tt(){
	 System.out.println("-------------");
	}
	
	
	@Resource
	private MM mm;
	
	public MM getMm(){
		return mm;
	}
	
	public void setMm(MM mm){
		this.mm = mm;
	}

}

class MM{
	
	private String name = "555555";
	
	public String getName(){
		return name;
	}
	
	public void setName(String name){
		this.name = name;
	}
}

enum Types{
	ONE,TWO
}

@Target(ElementType.METHOD)// 代表这个注解可以用在哪里
@Retention(RetentionPolicy.RUNTIME) // 运行时 和直接放到源码里面
@interface Bar{

	String name();
	
	String  val() default "456";
	
	Class c();
	
	int v();
	
	Types type();
}